package com.ruoyi.order.mapper;

import com.ruoyi.order.domain.OrderGoods;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 商品订单表 数据层
 * 
 * @author ruoyi
 */
public interface OrderGoodsMapper
{
    /**
     * 根据条件分页查询商品订单列表
     * 
     * @param orderGoods 商品订单信息
     * @return 商品订单信息集合信息
     */
    public List<OrderGoods> selectOrderGoodsList(OrderGoods orderGoods);

    /**
     * 通过商品订单号查询商品订单
     * 
     * @param orderNo 商品订单号
     * @return 商品订单对象信息
     */
    public OrderGoods selectOrderGoodsByOrderNo(String orderNo);

    /**
     * 查询商品订单总数汇总 - 条数
     *
     * @param orderGoods 商品订单信息
     * @return 商品订单对象信息
     */
    public int selectOrderGoodsCountTotal(OrderGoods orderGoods);

    /**
     * 查询商品订单每日新增总数 - 条数
     *
     * @param orderGoods 商品订单信息
     * @return 商品订单对象信息
     */
    public List<Map<String, Object>> selectOrderGoodsCountDaily(OrderGoods orderGoods);

    /**
     * 查询商品订单总数汇总 - 金额
     *
     * @param orderGoods 商品订单信息
     * @return 商品订单对象信息
     */
    public BigDecimal selectOrderGoodsAmountTotal(OrderGoods orderGoods);

    /**
     * 查询商品订单每日新增总数 - 金额
     *
     * @param orderGoods 商品订单信息
     * @return 商品订单对象信息
     */
    public List<Map<String, Object>> selectOrderGoodsAmountDaily(OrderGoods orderGoods);

    /**
     * 查询店员在待服务和服务中的订单数量
     *
     * @param employeeUserId 店员ID
     * @return 结果
     */
    public Integer countOrderGoodsByEmployeeId(Long employeeUserId);

    /**
     * 查询用户体验单数量 - 已支付
     *
     * @param orderUserId 下单用户ID acceptType 订单类型 - 2 - 体验单
     * @return 结果
     */
    public Integer checkCustomerExperienceOrder(Long orderUserId);

    /**
     * 新增商品订单信息
     * 
     * @param orderGoods 商品订单信息
     * @return 结果
     */
    public int insertOrderGoods(OrderGoods orderGoods);

    /**
     * 修改商品订单信息
     * 
     * @param orderGoods 商品订单信息
     * @return 结果
     */
    public int updateOrderGoods(OrderGoods orderGoods);

    /**
     * 通过商品订单号删除商品订单
     * 
     * @param orderNo 商品订单号
     * @return 结果
     */
    public int deleteOrderGoodsByOrderNo(String orderNo);

    /**
     * 批量删除商品订单信息
     * 
     * @param orderNos 需要删除的商品订单号
     * @return 结果
     */
    public int deleteOrderGoodsByOrderNos(String[] orderNos);
}
